library(tidyverse)
library(lubridate)
library(glue)
library(here)
library(ggtext)
library(patchwork)
library(kableExtra)
library(hrbrthemes)
library(tidytext)
set.seed(1014)
knitr::knit_hooks$set(inline = function(x) prettyNum(x, big.mark = ".", decimal.mark = ","))
options(
digits = 1,
scipen = 999,
OutDec = ",",
knitr.kable.NA = "",
radian.auto_match = FALSE
)
Sys.setenv(LANGUAGE = "pt-br")
Sys.setlocale("LC_TIME", "pt_BR")
#> [1] ""
# helper
`%notin%` <- function(x, y) !(x %in% y)
# aplica identidade visual da TB/AeP:
source(here("src/0-paleta-de-cores.R"), encoding = "utf-8")
Análises de pedidos de acesso a informação via LAI considerando a decisão de acesso.
Atenção: Eu fiz os agrupamentos para visualizar os órgãos de maneira mais focada, mas os critérios apenas intuitivos e baseados nos próprios nomes dos órgãos.
pedidos_painel <- "dados/load/rds/base-cgu.rds" %>%
here() %>%
readRDS() %>%
pluck("pedidos") %>%
janitor::clean_names() %>%
mutate(
ts_registro = data_registro,
ts_resposta = data_resposta,
data_registro = dmy(data_registro) %>% floor_date(unit = "month"),
data_resposta = dmy(data_resposta) %>% floor_date(unit = "month")) %>%
rename(orgao = orgao_destinatario) %>%
filter(!is.na(decisao),
!is.na(data_resposta),
data_registro < ymd("2021-10-01"),
esfera == "Federal")
pedidos_cgu <- readRDS(here("dados/load/rds/pedidos-clean.rds")) %>%
#filter(data_resposta <= periodo_final, data_resposta <= periodo_final) %>%
rename(orgao = orgaodestinatario)
orgaos_count_decisao <- pedidos_painel %>%
select(id_pedido, data_registro, decisao, orgao) %>%
add_count(data_registro, name = "n_mes") %>%
add_count(data_registro, orgao, name = "n_mes_orgao") %>%
add_count(data_registro, decisao, name = "n_mes_decisao") %>%
add_count(data_registro, decisao, orgao, name = "n_mes_decisao_orgao") %>%
select(id_pedido:n_mes, n_mes_decisao, n_mes_orgao, n_mes_decisao_orgao)
wafflechart_acesso_negado <- function(df, x,
titulo = "Maiores taxas de acessos negados registrada em um ano, por órgão") {
df %>%
filter(str_detect(orgao, x), decisao == "Acesso Negado") %>%
mutate(
taxa_interna = n_mes_decisao_orgao / n_mes_orgao,
taxa_global = n_mes_decisao_orgao / n_mes_decisao
) %>%
group_by(orgao) %>%
ungroup() %>%
group_by(ano = year(data_registro),
orgao) %>%
summarise(
`Taxa interna máxima registrada em um ano` = max(taxa_interna, na.rm = T),
`Taxa global máxima registrada em um ano` = max(taxa_global, na.rm = T),
.groups = "drop"
) %>%
pivot_longer(-c(ano, orgao), names_to = "categoria", values_to = "valor") %>%
complete(ano, orgao, categoria) %>%
filter(categoria == "Taxa interna máxima registrada em um ano") %>%
ggplot(aes(
x = factor(ano),
y = reorder(orgao, valor, na.rm = T),
fill = valor
)) +
geom_tile(color = "gray80") +
geom_text(
data = . %>%
filter(valor >= .15 | (valor >= .1 & str_detect(orgao, "^MEC "))),
aes(label = scales::percent(valor, accuracy = 0.1, decimal.mark = ",")),
size = 3) +
scale_x_discrete(position = "top") +
scale_fill_gradientn(
colors = c("white", cores_aep[["laranja"]], cores_aep[["rosa"]]),
na.value = "gray90",
labels = scales::percent_format()
) +
theme_minimal() +
theme(
panel.grid = element_blank(),
legend.position = "top",
legend.direction = "horizontal",
legend.justification = "left"
) +
labs(
title = titulo,
subtitle = glue(
"Valor máximo registrado no ano de referência (% ao total de pedidos recebidos)"
),
x = NULL,
y = NULL,
fill = "%"
)
}
militares <- "^(CEX|CMAR|COMAER)"
ministerio <- "Ministério|^(CGU|CC-PR|SEGOV|SGPR|AGU|GSI|VPR|PR )"
empresa_publica <- "Ltda$|S\\.A\\.?$|Empresa|Companhia"
educacao <- "Universidade|Escola|Colégio|Instituto Federal de Educação|^CEFET"
saude <- "EBSERH|Hospital|Maternidade"
bancos <- "^(BB|CEF|CMB)\\s|Banco"
cultura <- c(
"ANCINE",
"FBN",
"FCP",
"FUNARTE",
"FCRB",
"IPHAN",
"FUNDAJ"
) %>% paste(collapse = "|")
cultura <- glue("^({cultura})\\s|Museu")
meio_ambiente <- c(
"MMA",
"FUNAI",
"ICMBio",
"IBAMA",
"INCRA",
"FCP",
"INPE-MCT",
"INPA"
) %>% paste(collapse = "|")
meio_ambiente <- glue("^({meio_ambiente})\\s")
ciencia <- c(
"AEB",
"CAPES",
"CNPQ",
"FINEP",
"FNDE",
"CBPF",
"JBRJ",
"CETEM",
"CETENE",
"CNEN",
"INT",
"LNCC-MCT",
"ON-MCT",
"LNA",
"INPI",
"ITI",
"INPE-MCT",
"IBICT",
"CTI",
"IPEA",
"FIOCRUZ",
"IBC",
"IBGE",
"INEP",
"INES",
"INSA",
"FUNDACENTRO",
"FUNASA"
) %>% paste(collapse = "|")
ciencia <- glue("^({ciencia})\\s")
agencias_reguladoras <- c(
"INMETRO",
"ANA(C|TEL)?",
"ANEEL",
"ANTAQ",
"ANTT",
"ANP",
"ANM",
"ANPD",
"ANS",
"ANVISA",
"CADE",
"COAF",
"CVM",
"SERPRO"
) %>% paste(collapse = "|")
agencias_reguladoras <- glue("^({agencias_reguladoras})\\s")
pedidos_painel %>% distinct(orgao) %>%
arrange(orgao) %>%
filter(
!str_detect(orgao, educacao),
!str_detect(orgao, saude),
!str_detect(orgao, militares),
!str_detect(orgao, ministerio),
!str_detect(orgao, empresa_publica),
!str_detect(orgao, bancos),
!str_detect(orgao, cultura),
!str_detect(orgao, meio_ambiente),
!str_detect(orgao, ciencia),
!str_detect(orgao, agencias_reguladoras)
) %>% print(n = Inf)
#> # A tibble: 18 x 1
#> orgao
#> <chr>
#> 1 AN – Arquivo Nacional
#> 2 DEPEN – Departamento Penitenciário Nacional
#> 3 DNIT – Departamento Nacional de Infraestrutura de Transportes
#> 4 DNOCS – Departamento Nacional de Obras Contra as Secas
#> 5 DPF – Departamento de Polícia Federal
#> 6 DPRF – Departamento de Polícia Rodoviária Federal
#> 7 DPU – Defensoria Pública da União
#> 8 FUNAG – Fundação Alexandre de Gusmão
#> 9 FUNPRESP - Fundação de Previdência Complementar do Servidor Público Federal~
#> 10 IMBEL – Indústria de Material Bélico do Brasil
#> 11 INSS – Instituto Nacional do Seguro Social
#> 12 Órgão para Teste - pedidos endereçados a esse órgão não serão respondidos/r~
#> 13 PREVIC – Superintendência Nacional de Previdência Complementar
#> 14 SUDAM – Superintendência do Desenvolvimento da Amazônia
#> 15 SUDECO – Superintendência de Desenvolvimento do Centro-Oeste
#> 16 SUDENE – Superintendência do Desenvolvimento do Nordeste
#> 17 SUFRAMA – Superintendência da Zona Franca de Manaus
#> 18 SUSEP – Superintendência de Seguros Privados
orgaos_count_decisao %>%
mutate(orgao = str_wrap(orgao, 40)) %>%
wafflechart_acesso_negado(ministerio)
orgaos_count_decisao %>%
wafflechart_acesso_negado(militares)
orgaos_count_decisao %>%
mutate(orgao = str_wrap(orgao, 40)) %>%
wafflechart_acesso_negado(meio_ambiente)
orgaos_count_decisao %>%
wafflechart_acesso_negado(bancos)
orgaos_count_decisao %>% wafflechart_acesso_negado(ciencia)
orgaos_count_decisao %>% wafflechart_acesso_negado(educacao)
orgaos_count_decisao %>% wafflechart_acesso_negado(saude)
orgaos_count_decisao %>% wafflechart_acesso_negado(empresa_publica)
orgaos_count_decisao %>% wafflechart_acesso_negado(cultura)
orgaos_count_decisao %>% wafflechart_acesso_negado(agencias_reguladoras)
orgaos_count_decisao %>% wafflechart_acesso_negado("INSS")